abstract class Person {
  /**
   * 1.不能实例化但可以继承
   * 2.抽象类：抽象方法，普通方法，静态方法，属性
   * 3.抽象方法：只有方法体没有实现
   */

  late String nmae;
  late int id;

  //抽象方法
  abs(name, id);

  //普通方法
  dounw(name, id) {
    print(name);
    print(id);
  }
  static op(){
    print("我是抽象类的静态方法");
  }
}

class Min extends Person {
  late String name;
  late int id;

  Min(this.name,this.id);
  Min.end(this.name);

  @override
  abs(name, id) {
    print(name);
    print(id);
  }

  info(name, id) {
    print('object' + name);
    print(id);
  }
}

void main(){
  Person.op();
  var m =Min('min',23);
  print(m.name);
  print(m.id);
  var mm =Min.end('name');
  print(mm.name);
  mm.info('name', 23);
  mm.abs('sushi', 23);
  mm.dounw('name', 34);

   var pp =UU();
   pp.info();

}


abstract class U{
  late String name;
  late int id;

  //抽象方法
  info();

  void mo(){
    print('object');
  }


}

abstract class M extends U{
  @override
  info();
}
class UU extends M{
  @override
  info() {
    print('我是抽象方法');
  }

}